package com.maibow.service.admin;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.maibow.dao.DaoSupport;
import com.maibow.entity.admin.WeixinMenu;
import com.maibow.util.PageData;

@Service("weixinMenuService")
public class WeixinMenuService {

    @Resource(name = "daoSupport")
    private DaoSupport dao;

    /**
     * 
     * listAllParentModule(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：List<WeixinMenu>
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public List<WeixinMenu> listAllParentModule() throws Exception {
        return (List<WeixinMenu>) dao.findForList("WeixinMenuMapper.listAllParentModule", null);
    }

    /**
     * 取最大id
     * findMaxId(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pd
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData findMaxId(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("WeixinMenuMapper.findMaxModuleId", pageData);
    }

    /**
     * 
     * getModuleById(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData getModuleById(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("WeixinMenuMapper.getModuleById", pageData);
    }

    /**
     * 
     * saveModule(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param module
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void saveModule(WeixinMenu module) throws Exception {
        dao.save("WeixinMenuMapper.insertModule", module);
    }

    /**
     * 
     * edit(编辑)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param pageData
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：PageData
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public PageData edit(PageData pageData) throws Exception {
        return (PageData) dao.findForObject("WeixinMenuMapper.updateModule", pageData);
    }

    /**
     * 
     * listSubModuleByParentId(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param parentId
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：List<WeixinMenu>
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public List<WeixinMenu> listSubModuleByParentId(Integer parentmoduleid) throws Exception {
        return (List<WeixinMenu>) dao.findForList("WeixinMenuMapper.listSubModuleByParentId", parentmoduleid);
    }

    /**
     * 
     * deleteModuleById(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@param moduleid
     * 标记：@throws Exception
     * 返回值：void
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public void deleteModuleById(Integer moduleid) throws Exception {
        dao.save("WeixinMenuMapper.deleteModuleById", moduleid);
    }

    /**
     * 
     * listAllModule(这里用一句话描述这个方法的作用)
     * (这里描述这个方法适用条件 – 可选)
     * 标记：@return
     * 标记：@throws Exception
     * 返回值：List<Menu>
     * 作者：吴比(Wubi)
     * 
     * @exception
     * @since 1.0.0
     */
    public List<WeixinMenu> listAllModule() throws Exception {
        // 得到所有模块
        List<WeixinMenu> parentModuleList = this.listAllParentModule();
        for (WeixinMenu module : parentModuleList) {
            // 循环父级模块得到子模块
            List<WeixinMenu> subModuleList = this.listSubModuleByParentId(module.getModuleid());
            module.setSubmodule(subModuleList);
            module.setModuletreeid(module.getModuleid().toString());
        }
        return parentModuleList;
    }
}
